/*************************************************************************
 nom           :   Javascript toolkit
 version       :   1.0
 autheur       :   pma
 date          :   01/12/2012
 description   :   Cette librairie contient toutes les fonctions javascript
 utilisées par l'application
 *************************************************************************/

//================================================================
// ajax_refresh_user_form()
//================================================================ 
function ajax_refresh_user_form(data) {
    $('input[id=id_user_del]').val(data.user_detail[0][0]); // Spécificité pour l'affectation de valeur dans un champs hidden

    $('#user_firstname_update').val(data.user_detail[0][2]);
    $('#user_spousename_update').val(data.user_detail[0][3]);
    $('#user_email_update').val(data.user_detail[0][5]);
    $('#user_matricule_update').val(data.user_detail[0][4]);
    $('#user_function_update').val(data.user_detail[0][10]);
    $("#user_profile_update :selected").removeAttr("selected");
    $("#user_profile_update option[value='" + data.user_detail[0][13] + "']").attr('selected', 'selected');
    $("#user_node_update :selected").removeAttr("selected");
    $("#user_node_update option[value='" + data.user_detail[0][7] + "']").attr('selected', 'selected');
    $('#datepicker_user_date_start_contract_update').datepicker("setDate",
            data.user_detail[0][11] != '00/00/0000'
            ? data.user_detail[0][11]
            : '');
    $('#datepicker_user_date_end_contract_update').datepicker("setDate",
            data.user_detail[0][12] != '00/00/0000'
            ? data.user_detail[0][12]
            : '');
    $('#login_update').val(data.user_login[0][0]);
    $('#pwd_update').val(data.user_login[0][1]);
    $('#pwd_update_bis').val(data.user_login[0][1]);
    $("#user_manager_name_update :selected").removeAttr("selected");
    $("#user_manager_name_update option[value='" + data.user_detail[0][6] + "']").attr('selected', 'selected');
    $('#user_manager_firstname_update').val(data.user_manager ? data.user_manager[0][2] : '');
    $('#user_manager_profile_update').val(data.user_manager ? data.user_manager[0][14] : '');
}

function ajax_refresh_user_form_formdata() {
    var form = new FormData();
    form.append('id_user', $('#user_name_update').val());
    form.append('id_client_account', $('#client_account_update').val());
    return form;
}
//================================================================
// ajax_refresh_manager_form()
//================================================================ 
function ajax_refresh_manager_form(data) {
    $('#user_manager_firstname_update').val(data.user_firstname);
    $('#user_manager_profile_update').val(data.user_profile);
}

function ajax_refresh_manager_form_formdata() {
    var form = new FormData();
    form.append('id_manager', $('#user_manager_name_update').val());
    form.append('id_client_account', $('#client_account_update').val());
    return form;
}
//================================================================
// ajax_refresh_manager_form_creation()
//================================================================ 
function ajax_refresh_manager_form_creation(data) {
    $('#user_manager_firstname_creation').val(data.user_firstname);
    $('#user_manager_profile_creation').val(data.user_profile);
}

function ajax_refresh_manager_form_creation_formdata() {
    var form = new FormData();
    form.append('id_manager', $('#user_manager_name_creation').val());
    form.append('id_client_account', $('#client_account_creation').val());
    return form;
}
//================================================================
// ajax_refresh_client_linked_list_creation()
//================================================================ 
function ajax_refresh_client_linked_list_creation(data) {
    $('#user_profile_creation').empty().append(data.roles);
    $('#user_node_creation').empty().append(data.nodes);
    $('#user_manager_name_creation').empty().append(data.all_users_except_level_1);
    $('#user_manager_firstname_creation').val(data.manager_firstname);
    $('#user_manager_profile_creation').val(data.manager_profile);
}

function ajax_refresh_client_linked_list_creation_formdata() {
    var form = new FormData();
    form.append('id_client_account', $('#client_account_creation').val());
    return form;
}
//================================================================
// ajax_refresh_client_linked_list_update()
//================================================================ 
function ajax_refresh_client_linked_list_update(data) {
    $('input[id=id_user_del]').val(data.user_detail ? data.user_detail[0][0] : ''); // Spécificité pour l'affectation de valeur dans un champs hidden
    $('input[id=client_account_del]').val(data.id_client_account); // Spécificité pour l'affectation de valeur dans un champs hidden

    $('#user_name_update').empty().append(data.users);
    $('#user_firstname_update').val(data.user_detail ? data.user_detail[0][2] : '');
    $('#user_spousename_update').val(data.user_detail ? data.user_detail[0][3] : '');
    $('#user_email_update').val(data.user_detail ? data.user_detail[0][5] : '');
    $('#user_matricule_update').val(data.user_detail ? data.user_detail[0][4] : '');
    $('#user_function_update').val(data.user_detail ? data.user_detail[0][10] : '');
    $('#user_profile_update').empty().append(data.roles);
    $('#user_node_update').empty().append(data.nodes);
    $('#datepicker_user_date_start_contract_update').datepicker("setDate",
            data.user_detail && data.user_detail[0][11] != '00/00/0000'
            ? data.user_detail[0][11] : '');
    $('#datepicker_user_date_end_contract_update').datepicker("setDate",
            data.user_detail && data.user_detail[0][12] != '00/00/0000'
            ? data.user_detail[0][12] : '');
    $('#login_update').val(data.user_login ? data.user_login[0][0] : '');
    $('#pwd_update').val(data.user_login ? data.user_login[0][1] : '');
    $('#pwd_update_bis').val(data.user_login ? data.user_login[0][1] : '');
    $('#user_manager_name_update').empty().append(data.all_users_except_level_1);
    $('#user_manager_firstname_update').val(data.manager_firstname);
    $('#user_manager_profile_update').val(data.manager_profile);
}

function ajax_refresh_client_linked_list_update_formdata() {
    var form = new FormData();
    form.append('id_client_account', $('#client_account_update').val());
    return form;
}
//================================================================
// ajax_refresh_client_eai_template()
//================================================================ 
function ajax_refresh_client_eai_template(XMLdata)
{
    if (XMLdata != null)
    {
        var nodes = XMLdata.getElementsByTagName("eai_template");
        if (nodes.length > 0)
        {
            var strOption1 = "";
            for (var i = 0, c = nodes.length; i < c; i++) {
                strOption1 = strOption1 + "<option value=\"" + nodes[i].getAttribute("value");
                strOption1 = strOption1 + "\">" + nodes[i].getAttribute("name") + "</option>";
            }
            $('#select_eai_template').html(strOption1);
        }
        else
            $('#select_eai_template').html("<option>...</option>");
        var nodes_2 = XMLdata.getElementsByTagName("eai_user");
        if (nodes_2.length > 0)
        {
            var strOption2 = "";
            for (var i = 0, c = nodes_2.length; i < c; i++) {
                strOption2 = strOption2 + "<option value=\"" + nodes_2[i].getAttribute("value");
                strOption2 = strOption2 + "\">" + nodes_2[i].getAttribute("name") + "</option>";
            }
            $('#select_id_eai').html(strOption2);
            $('input[id=id_client_account]').val(XMLdata.getElementsByTagName('id_client_account')[0].getAttribute('value')); // Spécificité pour l'affectation de valeur dans un champs hidden
        }
        else
            $('#select_id_eai').html("<option>...</option>");
    }
    else
    {
        $('#select_eai_template').html("<option>...</option>");
        $('#select_id_eai').html("<option>...</option>");
    }
    stop_load_img();
}
//================================================================
// ajax_refresh_manager_campaign()
//================================================================ 
function ajax_refresh_manager_campaign(TEXTdata)
{
    if (TEXTdata != null)
    {

        $("#dialog_user_eai_to_be_done_per_manager").remove();
        $('#dialog_user_eai_remaining_per_manager').remove();
        $('#dialog_user_eai_ongoing_per_manager').remove();
        $('#dialog_user_eai_waiting_validation_per_manager').remove();
        $("#dialog_user_eai_closed_per_manager").remove();
        $('#refresh_campaign_per_manager').html(TEXTdata);
        $('#dialog_user_eai_to_be_done_per_manager').dialog({autoOpen: false});
        $('#dialog_user_eai_to_be_done_per_manager').dialog("option", "width", 600);
        $('#dialog_user_eai_to_be_done_per_manager').dialog("option", "modal", true);
        $('#dialog_user_eai_to_be_done_per_manager').dialog("option", "show", "slide");
        $('#dialog_user_eai_to_be_done_per_manager').dialog({buttons: {Fermer: function () {
                    $(this).dialog("close");
                }}});
        $('#dialog_user_eai_remaining_per_manager').dialog({autoOpen: false});
        $('#dialog_user_eai_remaining_per_manager').dialog("option", "width", 600);
        $('#dialog_user_eai_remaining_per_manager').dialog("option", "modal", true);
        $('#dialog_user_eai_remaining_per_manager').dialog("option", "show", "slide");
        $('#dialog_user_eai_remaining_per_manager').dialog({buttons: {Fermer: function () {
                    $(this).dialog("close");
                }}});
        $('#dialog_user_eai_ongoing_per_manager').dialog({autoOpen: false});
        $('#dialog_user_eai_ongoing_per_manager').dialog("option", "width", 600);
        $('#dialog_user_eai_ongoing_per_manager').dialog("option", "modal", true);
        $('#dialog_user_eai_ongoing_per_manager').dialog("option", "show", "slide");
        $('#dialog_user_eai_ongoing_per_manager').dialog({buttons: {Fermer: function () {
                    $(this).dialog("close");
                }}});
        $('#dialog_user_eai_waiting_validation_per_manager').dialog({autoOpen: false});
        $('#dialog_user_eai_waiting_validation_per_manager').dialog("option", "width", 600);
        $('#dialog_user_eai_waiting_validation_per_manager').dialog("option", "modal", true);
        $('#dialog_user_eai_waiting_validation_per_manager').dialog("option", "show", "slide");
        $('#dialog_user_eai_waiting_validation_per_manager').dialog({buttons: {Fermer: function () {
                    $(this).dialog("close");
                }}});
        $('#dialog_user_eai_closed_per_manager').dialog({autoOpen: false});
        $('#dialog_user_eai_closed_per_manager').dialog("option", "width", 600);
        $('#dialog_user_eai_closed_per_manager').dialog("option", "modal", true);
        $('#dialog_user_eai_closed_per_manager').dialog("option", "show", "slide");
        $('#dialog_user_eai_closed_per_manager').dialog({buttons: {Fermer: function () {
                    $(this).dialog("close");
                }}});
    }
    stop_load_img();
}
//================================================================
// ajax_refresh_graph_competences()
//================================================================ 
function ajax_refresh_graph_competences(TEXTdata, type_profil)
{
    var splitChaine = TEXTdata.split('@@@@');
//alert("Avant @ ; " + splitChaine[0] + " ; Après @ : " + splitChaine[1]); 
    if (TEXTdata != null)
    {
        $('#graphique_competences_' + type_profil).attr("src", splitChaine[0]);
        $('#refresh_table_competence_per_manager_' + type_profil).html(splitChaine[1]);
    }
    stop_load_img();
}
//================================================================
// ajax_refresh_graph_evaluation()
//================================================================ 
function ajax_refresh_graph_evaluation(TEXTdata, type_profil)
{

    var splitChaine = TEXTdata.split('@@@@');
//alert(" / " + splitChaine[0] + " / " + splitChaine[1]+ " / " + splitChaine[2]);
    if (TEXTdata != null)
    {
        $('#graphique_evaluation_' + type_profil).attr("src", splitChaine[0]);
        $('#graphique_trend_' + type_profil).attr("src", splitChaine[1]);
        $('#refresh_table_trend_per_manager_' + type_profil).html(splitChaine[2]);
    }
    stop_load_img();
}
//================================================================
// ajax_refresh_graph_training()
//================================================================ 
function ajax_refresh_graph_training(TEXTdata, type_profil)
{

    var splitChaine = TEXTdata.split('@@@@');
//alert( splitChaine[0] + " / " + splitChaine[1] );
    if (TEXTdata != null)
    {
        $('#graphique_training_followed_' + type_profil).attr("src", splitChaine[0]);
        $('#graphique_training_forecasted_' + type_profil).attr("src", splitChaine[1]);
        $('#refresh_table_training_followed_' + type_profil).html(splitChaine[2]);
        $('#refresh_table_training_forecasted_' + type_profil).html(splitChaine[3]);
    }
    stop_load_img();
}
//================================================================
// ajax_refresh_graph_trend()
//================================================================ 
//function ajax_refresh_graph_trend(TEXTdata,type_profil)
//{
//	if(TEXTdata != null)
//	{
//		$('#graphique_trend_'+type_profil).attr("src",TEXTdata);			
//	}
//	stop_load_img();
//}
//================================================================
// ajax_refresh_graph_previous_obj()
//================================================================ 
function ajax_refresh_graph_previous_obj(TEXTdata, type_profil)
{
    var splitChaine = TEXTdata.split('@@@@');
//alert(splitChaine[0] + " / " + splitChaine[1]);
    if (TEXTdata != null)
    {
        $('#graphique_p_obj_' + type_profil).attr("src", splitChaine[0]);
        $('#refresh_table_graphique_p_obj_per_manager_' + type_profil).html(splitChaine[1]);
    }
    stop_load_img();
}
//================================================================
// ajax_refresh_graph_futur_obj()
//================================================================ 
function ajax_refresh_graph_futur_obj(TEXTdata, type_profil)
{
    var splitChaine = TEXTdata.split('@@@@');
//alert(splitChaine[0] + " / " + splitChaine[1]);
    if (TEXTdata != null)
    {
        $('#graphique_f_obj_' + type_profil).attr("src", splitChaine[0]);
        $('#refresh_table_graphique_f_obj_per_manager_' + type_profil).html(splitChaine[1]);
    }
    stop_load_img();
}
function ajax_refresh_graph_satisfaction(TEXTdata, type_profil)
{
    var splitChaine = TEXTdata.split('@@@@');
    if (TEXTdata != null)
    {
//alert(" / " + splitChaine[0] + " / ");	
        $('#refresh_table_graphique_satisfaction_per_manager_' + type_profil).html(splitChaine[0]);
        for (i = 1; i < splitChaine.length; i = i + 2) {
            $('#graphique_satisfaction_' + type_profil + '_' + splitChaine[i + 1]).attr("src", splitChaine[i]);
            //alert(" / " + i + " / " + splitChaine[i+1]+ " / " + splitChaine[i]);	
        }
    }
    stop_load_img();
}
//================================================================
//$(document).ready(function () {
//    window.ajaj = {
//        base_url: '/sirh/',
//        formdata: function (hash) {
//            var form = new FormData();
//            for (var key in hash)
//                form.append(key, hash[key]);
//            return form;
//        },
//        nodes: {
//            get: function (id, db) {
//                ajaj_function(
//                        'GET',
//                        window.ajaj.base_url + 'nodes/update?id=' + id + '&db=' + db,
//                        undefined/*new window.ajaj.formdata(data)*/,
//                        ajaj_nodes_get
//                        )
//            }
//        }
//    };
//});
//function ajaj_nodes_get(data) {
//}
//================================================================
// ajax_function()
//================================================================ 
//function ajaj_function(method, url, formdata, callback) {
//    load_img();
//    $.ajax({
//        url: url,
//        data: formdata,
//        processData: false,
//        contentType: false,
//        type: method,
//        success: function (data) {
//            if (data)
//            {
//                //                alert(JSON.stringify(data, null, 4));
//                if (data.exception)
//                    ajax_error(data.exception);
//                else {
//                    callback(data);
//                    stop_load_img();
//                }
//            } else
//                ajax_error();
//        },
//        error: function () {
//            ajax_error();
//        }
//    });
//}
function ajax_function(base, controller, callback/*, type_profil*/) {
    /* load_img(); */
    $.ajax({
        url: base + controller.toLowerCase() + '/' + callback.name,
        data: eval(callback.name + '_formdata')(),
        processData: false,
        contentType: false,
        type: 'POST',
        success: function (data) {
            if (data)
            {
                /* alert(JSON.stringify(data, null, 4)); */
                if (data.exception)
                    ajax_error(data.exception);
                else {
                    callback(data);
                    stop_load_img();
                }
            } else
                ajax_error();
        },
        error: function () {
            ajax_error();
        }
    });

    return;
    if (callback == "ajax_refresh_client_eai_template")
    {
        xhr.open('POST', '../common/ajax.php'); //atention d'où on l'appelle car le chemin est en dur
        form.append('operation', "ajax_refresh_client_eai_template");
        form.append('id_client_account', $('#select_client_eai').val());
    }
    else if (callback == "ajax_refresh_manager_campaign")
    {
        xhr.open('POST', '../common/ajax.php'); //atention d'où on l'appelle car le chemin est en dur
        form.append('operation', "ajax_refresh_manager_campaign");
        form.append('id_campaign', $('#id_campaign').val());
        form.append('id_manager', $('#select_manager').val());
    }
    else if (callback == "ajax_refresh_graph_competences")
    {
        xhr.open('POST', '../common/ajax.php'); //atention d'où on l'appelle car le chemin est en dur
        form.append('operation', "ajax_refresh_graph_competences");
        form.append('type_profil', type_profil);
        // ATTENTION donc on ne peut pas avoir plus de 25 noeuds ou manager
        for (var i = 0, c = 25; i < c; i++)
        {
            if (document.getElementById('node_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('node_' + type_profil + "_" + i);
                if (document.getElementById('node_' + type_profil + "_" + i).checked)
                {
                    form.append('node_' + type_profil + "_" + i, checkbox.value);
                }
            }
            if (document.getElementById('manager_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('manager_' + type_profil + "_" + i);
                if (document.getElementById('manager_' + type_profil + "_" + i).checked)
                {
                    form.append('manager_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }
// ATTENTION nous mettons une limite de 25 ans
        for (var i = 0, c = 25; i < c; i++) {
            if (document.getElementById('year_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('year_' + type_profil + "_" + i);
                if (document.getElementById('year_' + type_profil + "_" + i).checked)
                {
                    form.append('year_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }
    }
    else if (callback == "ajax_refresh_graph_training")
    {
        xhr.open('POST', '../common/ajax.php'); //atention d'où on l'appelle car le chemin est en dur
        form.append('operation', "ajax_refresh_graph_training");
        form.append('type_profil', type_profil);
        // ATTENTION donc on ne peut pas avoir plus de 25 noeuds ou manager
        for (var i = 0, c = 25; i < c; i++)
        {
            if (document.getElementById('node_training_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('node_training_' + type_profil + "_" + i);
                if (document.getElementById('node_training_' + type_profil + "_" + i).checked)
                {
                    form.append('node_training_' + type_profil + "_" + i, checkbox.value);
                }
            }
            if (document.getElementById('manager_training_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('manager_training_' + type_profil + "_" + i);
                if (document.getElementById('manager_training_' + type_profil + "_" + i).checked)
                {
                    form.append('manager_training_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }
// ATTENTION nous mettons une limite de 25 ans
        for (var i = 0, c = 25; i < c; i++) {
            if (document.getElementById('year_training_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('year_training_' + type_profil + "_" + i);
                if (document.getElementById('year_training_' + type_profil + "_" + i).checked)
                {
                    form.append('year_training_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }
    }
    else if (callback == "ajax_refresh_graph_evaluation")
    {
        xhr.open('POST', '../common/ajax.php'); //atention d'où on l'appelle car le chemin est en dur
        form.append('operation', "ajax_refresh_graph_evaluation");
        form.append('type_profil', type_profil);
        // ATTENTION donc on ne peut pas avoir plus de 25 noeuds ou manager
        for (var i = 0, c = 25; i < c; i++)
        {
            if (document.getElementById('node_eval_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('node_eval_' + type_profil + "_" + i);
                if (document.getElementById('node_eval_' + type_profil + "_" + i).checked)
                {
                    form.append('node_eval_' + type_profil + "_" + i, checkbox.value);
                }
            }
            if (document.getElementById('manager_eval_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('manager_eval_' + type_profil + "_" + i);
                if (document.getElementById('manager_eval_' + type_profil + "_" + i).checked)
                {
                    form.append('manager_eval_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }
// ATTENTION nous mettons une limite de 25 ans
        for (var i = 0, c = 25; i < c; i++) {
            if (document.getElementById('year_eval_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('year_eval_' + type_profil + "_" + i);
                if (document.getElementById('year_eval_' + type_profil + "_" + i).checked)
                {
                    form.append('year_eval_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }
    }
    else if (callback == "ajax_refresh_graph_trend")
    {
//	xhr.open('POST', '../common/ajax.php');//atention d'où on l'appelle car le chemin est en dur
//	form.append('operation',"ajax_refresh_graph_trend");
//	form.append('type_profil',type_profil);
//	// ATTENTION nous mettons une limite de 25 ans
//	for (var i=0, c=25; i<c; i++) {		
//		if(document.getElementById('year_trend_'+type_profil+"_"+i)  != null)
//		{
//			checkbox = document.getElementById('year_trend_'+type_profil+"_"+i) ;
//			if(document.getElementById('year_trend_'+type_profil+"_"+i).checked)
//			{
//				form.append('year_trend_'+type_profil+"_"+i, checkbox.value);
//			}
//		}
//	}
    }
    else if (callback == "ajax_refresh_graph_previous_obj")
    {
        xhr.open('POST', '../common/ajax.php'); //atention d'où on l'appelle car le chemin est en dur
        form.append('operation', "ajax_refresh_graph_previous_obj");
        form.append('type_profil', type_profil);
        // ATTENTION donc on ne peut pas avoir plus de 25 noeuds ou manager
        for (var i = 0, c = 25; i < c; i++)
        {
            if (document.getElementById('node_p_obj_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('node_p_obj_' + type_profil + "_" + i);
                if (document.getElementById('node_p_obj_' + type_profil + "_" + i).checked)
                {
                    form.append('node_p_obj_' + type_profil + "_" + i, checkbox.value);
                }
            }
            if (document.getElementById('manager_p_obj_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('manager_p_obj_' + type_profil + "_" + i);
                if (document.getElementById('manager_p_obj_' + type_profil + "_" + i).checked)
                {
                    form.append('manager_p_obj_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }
// ATTENTION nous mettons une limite de 25 ans
        for (var i = 0, c = 25; i < c; i++) {
            if (document.getElementById('year_p_obj_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('year_p_obj_' + type_profil + "_" + i);
                if (document.getElementById('year_p_obj_' + type_profil + "_" + i).checked)
                {
                    form.append('year_p_obj_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }
    }
    else if (callback == "ajax_refresh_graph_futur_obj")
    {
        xhr.open('POST', '../common/ajax.php'); //atention d'où on l'appelle car le chemin est en dur
        form.append('operation', "ajax_refresh_graph_futur_obj");
        form.append('type_profil', type_profil);
        // ATTENTION donc on ne peut pas avoir plus de 25 noeuds ou manager
        for (var i = 0, c = 25; i < c; i++)
        {
            if (document.getElementById('node_f_obj_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('node_f_obj_' + type_profil + "_" + i);
                if (document.getElementById('node_f_obj_' + type_profil + "_" + i).checked)
                {
                    form.append('node_f_obj_' + type_profil + "_" + i, checkbox.value);
                }
            }
            if (document.getElementById('manager_f_obj_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('manager_f_obj_' + type_profil + "_" + i);
                if (document.getElementById('manager_f_obj_' + type_profil + "_" + i).checked)
                {
                    form.append('manager_f_obj_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }

// ATTENTION nous mettons une limite de 25 ans
        for (var i = 0, c = 25; i < c; i++) {
            if (document.getElementById('year_f_obj_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('year_f_obj_' + type_profil + "_" + i);
                if (document.getElementById('year_f_obj_' + type_profil + "_" + i).checked)
                {
                    form.append('year_f_obj_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }
    }
    else if (callback == "ajax_refresh_graph_satisfaction") {
        xhr.open('POST', '../common/ajax.php'); //atention d'où on l'appelle car le chemin est en dur
        form.append('operation', "ajax_refresh_graph_satisfaction");
        form.append('type_profil', type_profil);
        // ATTENTION donc on ne peut pas avoir plus de 25 noeuds ou manager
        for (var i = 0, c = 25; i < c; i++)
        {
            if (document.getElementById('node_satisfaction_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('node_satisfaction_' + type_profil + "_" + i);
                if (document.getElementById('node_satisfaction_' + type_profil + "_" + i).checked)
                {
                    form.append('node_satisfaction_' + type_profil + "_" + i, checkbox.value);
                }
            }
            if (document.getElementById('manager_satisfaction_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('manager_satisfaction_' + type_profil + "_" + i);
                if (document.getElementById('manager_satisfaction_' + type_profil + "_" + i).checked)
                {
                    form.append('manager_satisfaction_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }
// ATTENTION nous mettons une limite de 25 ans
        for (var i = 0, c = 25; i < c; i++) {
            if (document.getElementById('year_satisfaction_' + type_profil + "_" + i) != null)
            {
                checkbox = document.getElementById('year_satisfaction_' + type_profil + "_" + i);
                if (document.getElementById('year_satisfaction_' + type_profil + "_" + i).checked)
                {
                    form.append('year_satisfaction_' + type_profil + "_" + i, checkbox.value);
                }
            }
        }
    }

    if (callback == "ajax_refresh_client_eai_template")
        ajax_refresh_client_eai_template(xhr.responseXML);
    else if (callback == "ajax_refresh_manager_campaign")
        ajax_refresh_manager_campaign(xhr.responseText);
    else if (callback == "ajax_refresh_graph_competences")
        ajax_refresh_graph_competences(xhr.responseText, type_profil);
    else if (callback == "ajax_refresh_graph_evaluation")
        ajax_refresh_graph_evaluation(xhr.responseText, type_profil);
    else if (callback == "ajax_refresh_graph_training")
        ajax_refresh_graph_training(xhr.responseText, type_profil);
    //else if (callback == "ajax_refresh_graph_trend")
    //	ajax_refresh_graph_trend(xhr.responseText,type_profil) ; 
    else if (callback == "ajax_refresh_graph_previous_obj")
        ajax_refresh_graph_previous_obj(xhr.responseText, type_profil);
    else if (callback == "ajax_refresh_graph_futur_obj")
        ajax_refresh_graph_futur_obj(xhr.responseText, type_profil);
    else if (callback == "ajax_refresh_graph_satisfaction")
        ajax_refresh_graph_satisfaction(xhr.responseText, type_profil);
}
function ajax_error(message) {
    stop_load_img();
    if (message)
        alert(message);
    else
        alert('Erreur inattendue.');
}
//================================================================
//partie  fonction utilitaire sur controle des champs
//================================================================
// highlight()
//================================================================ 
function highlight(field, error)
{
    if (error)
        field.style.backgroundColor = "#fba";
    else
        field.style.backgroundColor = "";
}

//================================================================
// checkClientName()
//================================================================
function checkClientName(field)
{
    /*
     Un nom de client:
     -	doit comporter un nombre de caractères minimum (au moins 3 et au max 20)
     -	doit comporter soit des majuscules, des minuscules, des chiffres, underscore, tiret
     */
    var regex = /^([a-zA-Z0-9_-]{3,20})$/;
//alert('checkClientName :'+field.value);
    if (!regex.test(field.value)) {
        highlight(field, true);
        return false;
    } else {
        highlight(field, false);
        return true;
    }
}
//================================================================ // checkDBName()
//================================================================
function checkDBName(field)
{
    /*
     Un nom de base de données:
     -	doit comporter un nombre de caractères minimum (au moins 3 et au max 12)
     -	doit comporter soit des majuscules, des minuscules, des chiffres, underscore, tiret
     */
    var regex = /^([a-zA-Z0-9_-]{3,12})$/;
    if (!regex.test(field.value)) {
        highlight(field, true);
        return false;
    } else {
        highlight(field, false);
        return true;
    }
}
//================================================================ // checkLogin()
//================================================================
function checkLogin(field)
{
    /*
     Un identifiant: 
     -	doit comporter un nombre de caractères minimum (au moins 6 et au max 20)
     -	doit comporter soit des majuscules, des minuscules, des chiffres, underscore, tiret, et les caractères accentués (âäàéèùêëîïôöçñ)
     */
    var regex = /^([a-zéçèàêëîïôöûüâäÉÀÈËËÏÎÖÔÛÜÄÂA-Z0-9._-]{6,20})$/;
    if (!regex.test(field.value)) {
        highlight(field, true);
        return false;
    } else {
        highlight(field, false);
        return true;
    }
}

//================================================================
// checkPassword()
//	mode = 4 Vérification de la validité d'un mot de passe en mode création
//	mode = 7 Vérification de la validité d'un mot de passe en mode mise à jour
//================================================================

function checkPasswordEx(pwd1, pwd2) {
    /*
     Un mot de passe :
     -	doit comporter un nombre de caractères minimum (au moins 6, au plus 20)
     -	doit comporter au moins une majuscule (et une minuscule)
     -	doit comporter au moins un chiffre
     -	ne doit comporter aucun espace
     */
    var regex = /^(?=.*[a-z]+)(?=.*[A-Z]+)(?=.*[0-9]+)([^\s]{6,20})$/;
    var verification = false;
    if (pwd1.value != "")
        if (!regex.test(pwd1.value))
        {
            highlight(pwd1, true);
            verification = false;
        } else {
            highlight(pwd1, false);
            verification = true;
        }

    if (pwd2.value != "")
        if (!regex.test(pwd2.value))
        {
            highlight(pwd2, true);
            verification = false;
        } else
        {
            highlight(pwd2, false);
            verification = true;
        }

    if (pwd1.value == "" || pwd2.value == "")
        return true;
    if (pwd1.value != pwd2.value) {
        alert('Les deux mots de passe ne sont pas identiques.');
        verification = false;
    }

    return verification;
}

function checkPassword(doc, mode)
{
    if (mode == 4)
        return checkPasswordEx(doc.getElementById('pwd_creation'), doc.getElementById('pwd_creation_bis'));
    else if (mode == 7)
        return checkPasswordEx(doc.getElementById('pwd_update'), doc.getElementById('pwd_update_bis'));
    else
        return false;
}
//================================================================
// checkDate()
//================================================================
function checkDate(field, date_required)
{
    /*
     Une date doit formater ainsi DD/MM/AAAA
     Attention il y a un bug sur les Jquery qui surcharge déjà la méthode onblur et c 
     pour cela que le champs reste en rouge même si le format est bon car il garde l'ancienne date en mémoire
     */
    var regex = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
    verification2 = false;
    if ((field.value != "") && !regex.test(field.value)) {
        highlight(field, true);
        verification2 = false;
    } else if (date_required == true && field.value == "") {
        highlight(field, true);
        verification2 = false;
    } else {
        highlight(field, false);
        verification2 = true;
    }
    return verification2;
}
//================================================================
// compareDate()
//================================================================
function compareDate(field1, field2)
{
    var retour = true;
    if (field1.value != "" || field2.value != "") {
// Les dates sont au format dd/mm/aaaa
        day1 = field1.value.substring(0, 2);
        month1 = field1.value.substring(3, 5);
        year1 = field1.value.substring(6, 10);
        d1 = new Date(year1, month1 - 1, day1); // prends en compte les années bissextile

        day2 = field2.value.substring(0, 2);
        month2 = field2.value.substring(3, 5);
        year2 = field2.value.substring(6, 10);
        d2 = new Date(year1, month1 - 1, day1); // prends en compte les années bissextile

        if (compare(d1, d2) != -1)
            retour = false;
    }

    return retour;
}
//================================================================
//	compare(-
//  0 si date_1=date_2
//  1 si date_1>date_2
// -1 si date_1<date_2	  
//================================================================
function compare(date_1, date_2) {
    diff = date_1.getTime() - date_2.getTime();
    return (diff == 0 ? diff : diff / Math.abs(diff));
}
//================================================================
// checkEmail()
//================================================================
function checkEmail(field)
{

    var regex = /^([a-z0-9._-])+@([a-z0-9.-])+(.)([a-z]){2,4}$/;
    if ((field.value != "") && !regex.test(field.value)) {
        highlight(field, true);
        return false;
    } else {
        highlight(field, false);
        return true;
    }
}
//================================================================ // setDateRequired()
//================================================================
function setDateRequired(doc, name, start_name, end_name)
{

    if (doc.getElementById(name).checked) {
        doc.getElementById(start_name).required = true;
        doc.getElementById(end_name).required = true;
    }
    else {
        doc.getElementById(start_name).required = false;
        doc.getElementById(end_name).required = false;
    }
}
//================================================================
// setFieldRequired()
//================================================================
function setFieldRequired(doc, name_check_field, name_target_field)
{

    if (doc.getElementById(name_check_field).checked) {
        doc.getElementById(name_target_field).required = true;
    }
    else {
        doc.getElementById(name_target_field).required = false;
    }
}